home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 001-010 / amok06 / mathlib / mathlib.doc < prev    next >
Text File  |  1993-11-04  |  5KB  |  186 lines

  1. ----------------------------------------------------------------------
  2. Dokumentation zu MathLibR2 und -R3 Version 1.0
  3. Autor: Nicolas Benezan, Postwiesenstr. 2, D7000 Stuttgart 60
  4. ----------------------------------------------------------------------
  5.  
  6. MathLibR2 und MathLibR3 sind Mathematik-Bibliotheken für den R2
  7. (zweidimensionaler reeller Raum) und R³ (dreidimensionaler reeller
  8. Raum). Die Unterschiede zwischen MathLibR2 und MathLibR3 sind gering.
  9. Falls nicht anderes vermerkt ist, gilt die folgende Dokumentation für
  10. beide Module. Die Prozedur- und Typennamen haben noch zusätzlich eine
  11. 2 oder 3 angehängt, sodaß sie ohne Nameskonflikt beliebig aus beiden
  12. Modulen Importieren können. In der Dokumentation sind diese Indizies
  13. weggelassen, wenn beide gemeint sind.
  14. Ich habe versucht, die mathematische Schreibweise der Formeln so gut
  15. es eben geht mit dem Standardzeichensatz zu realisieren:
  16.  
  17. a steht für einen Skalar (reelle Zahl)    Beispiel: 1.0
  18.  
  19. _                           /x\
  20. a für einen (Spalten-) Vektor    Beispiel: | y |
  21.                            \z/
  22.  
  23.                        /a11 a12 a13\
  24. A für eine Matrix.    Beispiel: | a21 a22 a23 |
  25.                         \a31 a32 a33/
  26.     
  27.                       /1 0 0\
  28. E ist Einheitsmatrix    /1 0\    bzw. | 0 1 0 |
  29.             \0 1/          \0 0 1/
  30.  
  31. æ,ß,y sind lineare Abbildungen (soll "alpha", "beta" und "gamma"
  32. darstellen)
  33.  
  34. a·b oder ab: Multiplikation
  35. _   _
  36. a x b : Kreuzmultiplikation
  37.  
  38. æ°ß : verknüpfung der Abbildungen æ nach ß
  39.  
  40. Die strengen Mathematiker mögen mir verzeihen.
  41.  
  42. Vektoren Addieren und Subtrahieren
  43. ----------------------------------
  44.         _ _ _  _ _ _
  45. Formel: c=a+b  d=a-b
  46.  
  47. Modula: VAR a,b,c,d:Vector;
  48.         ...
  49.         Add(a,b,c); Sub(a,b,d);
  50.  
  51. Skalarmultiplikation
  52. --------------------
  53.           _           _
  54. Formel: b=a·s oder b=sa
  55.  
  56. Modula: VAR a,b:Vektor;
  57.             s:Scalar;
  58.         ...
  59.         Smul(s,a,b);
  60.  
  61. Das Skalarprodukt
  62. -----------------
  63.           __
  64. Formel: s=ab
  65.  
  66. Modula: VAR a,b:Vector;
  67.             s:Skalar;
  68.         ...
  69.         s:=SkProd(a,b);
  70.  
  71. Das Vektorkreuzprodukt
  72. ----------------------
  73. Diese Prozedur ist nur im dreidimensionalen Raum definiert.
  74.         _ _   _
  75. Formel: c=a x b
  76.  
  77. Modula: VAR a,b,c:Vector;
  78.         ...
  79.         Xprod3(a,b,c);
  80.  
  81. Im R2 gibt es zwar kein Kreuzprodukt, dafür ist aber auf C (Menge der
  82. komplexen Zahlen, isomorph zu R2, nicht etwa die Konkurrenz zu Modula)
  83. eine Multiplikation definiert, bei der die Multiplikation zweier
  84. komplexer Zahlen wieder eine komplexe Zahl ergibt.
  85.  
  86. Diese Multiplikation wurde in MathLibR2 als Cprod2 implementiert.
  87.  
  88. Betrag eines Vektors
  89. --------------------
  90.            _
  91. Formel: s=|a|
  92.  
  93. Modula: VAR a:Vector;
  94.             s:Scalar;
  95.         ...
  96.         s:=Abs(a);
  97.  
  98. lineare Abbildungen
  99. -------------------
  100. Bis auf die Parallelverschiebung (Translation) lassen sich alle
  101. linearen Abbildungen wie zentrische Streckung, Drehung und Scherung
  102. mit einer 2x2-Matrix im zweidimensionalen oder einer 3x3-Matrix im
  103. dreidimensionalen Raum beschreiben. Es gibt die Möglichkeit, auch die
  104. Translation unter Verwendung einer 4x4 Matrix einzubeziehen.
  105. Allerdings rate ich, stattdessen lieber getrennte Matrizenoperation
  106. und Vektoraddition zu verwenden. Eine 4x4-Transformation benötigt
  107. nämlich 16 Multiplikationen und 12 Additionen gegenüber 9
  108. Multiplikationen und 9 Additionen bei der 3x3-Transformation mit
  109. anschließender Vektoraddition, was sich in der Rechenzeit bemerkbar
  110. macht ('mal davon abgesehen, daß ich ehrlich gesagt keine Lust habe,
  111. die äußerst komplexe 4x4-Matrizeninversion zu programmieren).
  112.  
  113. Die Matrix für eine zentrische Streckung um den Faktor k errechnet
  114. sich aus k·E (E:Einheitsmatrix). Sonderfall: k=1 (Identität)
  115.  
  116. Eine Drehmatrix für den zweidimensionalen Raum sieht so aus:
  117. /cos w  -sin w\
  118. \sin w   cos w/
  119.  
  120. Im dreidimensionalen Raum kann um verschiedene Achsen gedreht werden.
  121. Drehung um die X-Achse:
  122.  /1     0      0  \
  123. | 0   cos w  sin w |
  124.  \0  -sin w  cos w/
  125.  
  126. Drehung um die Y-Achse:
  127.  /cos w  0  -sin w\
  128. |   0    1     0   |
  129.  \sin w  0   cos w/
  130.  
  131. Drehung um die Z-Achse:
  132.  /cos w  sin w  0\
  133. |-sin w  cos w  0 |
  134.  \  0      0    1/
  135.  
  136. Affine Abbildungen, Scherung und Stauchung, werden in der
  137. Computergrafik, für die diese Module gedacht sind, nur selten
  138. verwendet, weshalb ich hier nicht darauf eingehen werde. Wer mehr über
  139. Vektoren, Matrizen und Abbildungen wissen möchte, kann sich mit
  140. entsprechender Literatur behelfen.
  141.  
  142. Abbildung eines Vektors
  143.           _       _  _
  144. Formel: æ(v) bzw. b=Mv
  145.  
  146. Modula: VAR v,b:Vector;
  147.             M:Matrix;
  148.         ...
  149.         Trans(M,v,b);
  150.  
  151. Umkehrabbildung
  152. ---------------
  153.         _
  154. Formel: æ (lies: alpha quer) oder M^-1 (lies: M hoch -1)
  155.  
  156. Modula: VAR M:Matrix;
  157.             Erfolg:BOOLEAN;
  158.         ...
  159.         Erfolg:=Invert(M);
  160.  
  161. gibt es keine Umkehrabbildung ist Erfolg FALSE.
  162.  
  163. Verkettung von Abbildungen
  164. --------------------------
  165.  
  166. Formel: y=æ°ß
  167.  
  168. Modula: VAR A,B,C:Matrix;
  169.         ...
  170.         Mmul(A,B,C);
  171.  
  172. Falls in einer Prozedur mehrere Parameter gleichen Typs verlangt
  173. werden, ist es erlaubt, die gleiche Variable wiederzuverwenden.
  174. Beispiel:
  175. Trans3(Matrix,Vector,Vector);
  176. Der Vektor wird lokal zwischengespeichert und dann mit dem Ergebnis
  177. überschrieben.
  178.  
  179. Wer statt FFP lieber mit (LONG)REAL arbeitet, kann die Definition des
  180. Typs Scalar ändern, ohne das ganze Programm durchsuchen zu müssen.
  181.  
  182. _________________
  183. Viel Spaß !
  184.  
  185. Bene
  186.